package com.itheima.edu.info.manager.dao;

import com.itheima.edu.info.manager.domain.Student;

/**
 * dao 库管,用于数据的增删改查
 */
public class StudentDao implements BaseStudentDao {
    /**1.创建学生对象数组,使用static修饰,使得数组stus可以共享
     *
     */
    private static Student[] stus = new Student[5];

    static {
        Student stu1 = new Student("heima001", "张三", "23", "1997-11-11");
        Student stu2 = new Student("heima002", "李四", "22", "1998-11-11");
        stus[0] = stu1;
        stus[1] = stu2;
    }
    /**
     * 添加学生方法
     * @param stu
     * @return
     */
    @Override
    public boolean addStudent(Student stu) {

        //2.添加学生到数组
        //2.1定义变量index为-1,假设数组已经全部存满,没有null的元素
        int index = -1;
        //2.2遍历数组取出每一个元素,判断是否为null
        for (int i = 0; i < stus.length; i++) {
            Student student = stus[i];
            if (student == null){
                index = i;
                //2.3如果为null,让index变量记录当前索引位置,并用break结束循环遍历
                break;
            }
        }
        //3.返回是否添加成功的boolean类型
        if(index == -1){
            //数组已满
            return false;
        }else {
            //没有装满,正常添加
            stus[index] = stu;
            return true;
        }
    }

    /**
     * 查看学生方法
     * @return
     */
    @Override
    public Student[] findAllStudent() {
        return stus;
    }

    /**
     * 删除学生方法
     * @param delId
     */
    @Override
    public void deleteStudentById(String delId) {
        //1.查找id所在索引位置
        int index = getIndex(delId);
        //2.将该索引位置使用null元素进行覆盖
        stus[index] = null;
    }

    @Override
    public int getIndex(String id){
        int index = -1;
        for (int i = 0; i < stus.length; i++) {
            Student stu = stus[i];
            index = i;
            break;
        }
        return index;
    }

    /**
     * 修改学生方法
     * @param updateId
     * @param newStu
     */
    @Override
    public void updateStudent(String updateId, Student newStu) {
        //1.查找updateId,在容器中的位置
        int index = getIndex(updateId);
        //2.将索引位置,使用新的学生对象替换
        stus[index] = newStu;
    }
}
